var luckysheetConfig = function() {
    return {
        getOptionsData(rowNums, colNums, cellData, dataVerfications) {
            let data = [{
                "name": "检验", //工作表名称
                "color": "", //工作表颜色
                "index": 0, //工作表索引
                "status": 1, //激活状态
                "order": 0, //工作表的下标
                "hide": 0, //是否隐藏
                "row": rowNums, //行数
                "column": colNums, //列数
                "defaultRowHeight": 19, //自定义行高
                "defaultColWidth": 140, //自定义列宽
                "celldata": cellData,
                "config": {
                    "merge": {}, //合并单元格
                    "borderType": "border-all",
                    "rowlen": {}, //表格行高
                    "columnlen": {}, //表格列宽
                    "rowhidden": {}, //隐藏行
                    "colhidden": {}, //隐藏列
                    "borderInfo": {
                        "range": "0:100",
                        "value": "1px solid #000000"
                    }, //边框
                    "authority": {}, //工作表保护

                },
                "scrollLeft": 0, //左右滚动条位置
                "scrollTop": 0, //上下滚动条位置
                "luckysheet_select_save": [], //选中的区域
                "calcChain": [], //公式链
                "isPivotTable": false, //是否数据透视表
                "pivotTable": {}, //数据透视表设置
                "filter_select": {}, //筛选范围
                "filter": null, //筛选配置
                "luckysheet_alternateformat_save": [], //交替颜色
                "luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色    
                "luckysheet_conditionformat_save": {}, //条件格式
                "zoomRatio": 1.6, // 缩放比例
                "image": [], //图片
                "showGridLines": 1, //是否显示网格线
                "dataVerification": dataVerfications, //数据验证配置
                "frozen": {
                    type: 'rangeBoth',
                    range: {
                        row_focus: rowNums - vm.originData.inspections.length - 1 - 1,
                        column_focus: 0
                    }
                }
            }];
            return data;
        },
        rangeSelect(sheet, range, rowNums, colNums) { // lucksheet

            $('#autoInput').val('');
            // vm.InputFocus = 'none';

            // 提取选中单元格的行和列信息
            let ranged = {
                r: range[0].row[0],
                c: range[0].column[0],
            };

            // 从所有允许修改的单元格中，找到对应信息
            const editObj = vm.editCells.filter(item => item.r == ranged.r && item.c == ranged
                .c);




            vm.editRange = range;

            // 获取检验结果行列信息
            let resRange = {
                r: vm.headerLevel + vm.originData.inspections.length + 1,
                // c: ranged.c
            }
            if (ranged.r == resRange.r) {

                for (let i = 0; i < vm.originData.FQCDetail.length; i++) {
                    if (vm.originData.FQCDetail[i].cmax == ranged.c) {

                        var cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
                        // vm.editRange = range;
                        vm.isJYResult = cellValue;
                        vm.showResult = true;

                        return;
                    }
                }
            }


            // 判断点击的是否为检验结果列（指定列，非标题行内的单元格）
            // if (ranged.r > vm.headerLevel && ranged.c == colNums) {
            //  vm.showResult = true;
            //  // 获取单元格的值
            //  var cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
            //  // 赋值选中信息
            //  vm.editRange = range;
            //  vm.isJYResult = cellValue;
            // }

            // 判断当前选中单元格是否为允许修改的单元格，是的话则让隐藏的输入框聚焦
            if (editObj.length == 0) {
                vm.ChoiceCellData = {};
                vm.DeviceInfo.NeedDevice = '不可测量';
                vm.showEditWindow = false;
                vm.allowToNext = false;
                vm.editRange = [];
                $('#autoInput').val('')
            } else if (editObj.length) {
                // 赋值选中信息
                // vm.editRange = range;
                // 切换后，清除输入框内容
                $('#autoInput').val('');
                let IsWhere = {
                    r: editObj[0].r,
                    c: editObj[0].c,
                };
                vm.allowToNext = true;


                // 获取选中输入框位置对应的对象数据
                let data = GetChoiceCellData(vm.originData.inspections, IsWhere);
                vm.ChoiceCellData = APP.deepClone(data);
                // 获取选中单元格所需的测量设备
                if (data.Benchmark) {
                    // 检查 Benchmark 是否包含 '|' 字符
                    const benchmark = data.Benchmark;
                    const index = benchmark.indexOf('|');

                    // 根据是否找到 '|' 来设置 NeedDevice 的值
                    vm.DeviceInfo.NeedDevice = index === -1 ? benchmark : benchmark.slice(0,
                        index);


                } else {
                    vm.showEditWindow = false;
                    vm.allowToNext = false;
                }

            } else {
                vm.editRange = [];
                vm.ChoiceCellData = {};
                vm.DeviceInfo.NeedDevice = '不可测量';
                vm.allowToNext = false;
            }
        },
        cellEditBefore(range, rowNums, colNums) { // 双击单元格
            // 提取选中单元格的行和列信息
            let ranged = {
                r: range[0].row_focus,
                c: range[0].column_focus,
            };



            // 从所有允许修改的单元格中，找到对应信息
            const editObj = vm.editCells.filter(item => item.r == ranged.r && item.c ==
                ranged.c);


            // 判断点击的是否是最后一列的备注，如果是，则允许弹起键盘
            let IsRemark = false;
            // if (vm.RemarkIndex.c == ranged.c && vm.RemarkIndex.r < ranged.r) {
            //  IsRemark = true;
            // };

            // 当前选中单元格为 允许修改的单元格 || 备注项
            if (editObj.length > 0 || IsRemark) {
                let IsWhere = {
                    r: ranged.r,
                    c: ranged.c,
                };
                // 获取选中输入框位置对应的对象数据
                let data = GetChoiceCellData(vm.originData.inspections, IsWhere);



                function showAndFocusInput(cellValue) {
                    // 可弹起软键盘 , 若 InputFocus 为 none 时，禁止键盘弹起
                    vm.InputFocus = 'text';
                    // 修改输入框盒子层级，控制输入框显示隐藏
                    vm.showEditWindow = true;
                    vm.allowToNext = true;
                    // 给输入框赋值
                    $('#autoInput').val(cellValue);
                    // 延迟聚焦输入框
                    setTimeout(() => {
                        // vm.$refs.editKeyControl.querySelector('input').focus();
                        $("#autoInput").focus();
                    }, 50);
                }

                if (IsRemark) {
                    // 备注
                    // 获取选中单元格的位置和内容
                    const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
                    // 显示并聚焦输入框
                    showAndFocusInput(cellValue);
                } else {
                    const benchmark = data.Benchmark;
                    const index = benchmark.indexOf('|');
                    const NeedDevice = index === -1 ? benchmark : benchmark.slice(0,
                        index);

                    // 特殊设备处理
                    // if (NeedDevice.includes("光谱仪")) {
                    // 当所需设备为光谱、三坐标等
                    // 根据IsLaboratory字段，判断当前单元格是否为报告展示类型


                    //记录选中单元格对象
                    // vm.editRange = range;
                    if (data.Type == 2) { // 检验标准

                        //记录选中单元格对象
                        // vm.editRange = range;
                        vm.isSelectCellResult = data.value;

                        if (data.IsLaboratory) {
                            // 1、判断当前单元格是否存在值
                            // 获取选中单元格的位置和内容
                            const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
                            try {
                                if (data.value == "") {
                                    // 没有值的时候调取检验列表数据
                                    basicConfig.GetPopupInfoByDevice(vm.DeviceInfo.NeedDevice);
                                } else {

                                    // 要求，弹层代码、变量、脚本完善
                                    vm.rowDeviceForm.result = cellValue && cellValue.toLowerCase() ==
                                        "ng" ? 0 : 1;

                                    // 展示明细弹层
                                    basicConfig.ViewPopupInfoByDevice(NeedDevice);

                                }

                            } catch (err) {

                            }


                        } else {
                            // 打开选择ok或者ng的弹层
                            vm.showSelectCellResult = true;
                            vm.showEditWindow = true;
                            vm.allowToNext = false;

                        }


                        // throw '只读，回传报错';
                    } else {

                        if (data.IsLaboratory) {
                            // 1、判断当前单元格是否存在值
                            // 获取选中单元格的位置和内容
                            const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
                            try {
                                if (data.value == "") {
                                    // 没有值的时候调取检验列表数据
                                    basicConfig.GetPopupInfoByDevice(vm.DeviceInfo.NeedDevice);
                                } else {

                                    // 要求，弹层代码、变量、脚本完善
                                    // vm.rowDeviceForm.result = cellValue && cellValue.toLowerCase() ==
                                    //  "ng" ? 0 : 1;


                                    // 展示明细弹层
                                    basicConfig.ViewPopupInfoByDevice(NeedDevice);

                                }

                            } catch (err) {

                            }


                        } else {
                            vm.InputFocus = 'text';
                            vm.allowToNext = true;
                            // 获取选中单元格的位置和内容
                            const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
                            // 显示并聚焦输入框
                            showAndFocusInput(cellValue);

                        }

                    }
                }

            } else {
                vm.showEditWindow = false;
                $('#autoInput').val('');
            }
            throw '只读，回传报错';
        },
        cellUpdated(r, c, oldValue, newValue, isRefresh) {
            const inspections = vm.originData.inspections;
            // 判断是否检验结果行
            if (r != vm.headerLevel + vm.originData.inspections.length + 1) {
                for (const inspection of inspections) {
                    for (const item of inspection.FQCItems) {
                        let color = item.result == 1 ? "#07d348" : item.result == 0 ? "#f00" : "#a8a8a8";
                        if (item.c == c && item.r == r) {

                            luckysheet.setCellFormat(r, c, "fc", color);
                        }
                    }
                }
            }



        },
    }
}()